const obj = {
    name: 'John',
    age: 30,
};

const handler = {
    get: function (target, prop) {
        console.log("getter");
        console.log(`正在访问被代理的目标 ${target}`);
        console.log(`正在访问属性 ${prop}`);
        return target[prop];
    },

    set: function (target, prop, value) {
        console.log("setter");
        console.log(`正在访问被代理的目标 ${target}`);
        console.log(`正在设置属性 ${prop}，值为 ${value}`);
        target[prop] = value;
    },

    deleteProperty: function (target, prop) {
        console.log("deleter", target, prop);
        delete target[prop];
    },
};

const proxy = new Proxy(obj, handler);

/* 访问现有的key-value */
// console.log(proxy.name); // 输出：正在访问属性 name，John
// proxy.age = 35; // 输出：正在设置属性 age，值为 35
// console.log(proxy.age); // 输出：正在访问属性 age，35

/* 新增key-value */
// proxy.gender = "male"
// console.log(obj);

/* 删除key-value */
// delete proxy.age; // 输出：正在删除属性 age
// console.log(obj);